package com.fulihui.information.core.repository;

import com.fulihui.information.dal.dataobj.InfoContentExample;
import com.fulihui.information.dto.ContentDTO;
import com.fulihui.information.dto.ContentListItemDTO;
import com.fulihui.information.request.ContentPageQueryRequest;
import com.fulihui.information.request.ModifyContentRequest;

import java.util.List;
import java.util.Set;

/**
 * @author LeeSon on 2016/12/28 0028.
 */
public interface ContentRepository {

    /**
     * 批量更新内容状态
     *
     * @param ids      主键集合
     * @param status   状态
     * @param operator 操作员
     * @return 操作结果 true/false
     */
    boolean batchModifyStatus(Set<String> ids, String status, String operator);

    boolean modifyContent(ModifyContentRequest request);

    /**
     * 置顶资讯内容
     *
     * @param contentId    主键
     * @param categoryCode 类目代码
     * @param operator     操作员
     */
    void setTop(String contentId, String categoryCode, String operator);

    List<ContentDTO> queryPage(ContentPageQueryRequest request);

    int queryPageCount(ContentPageQueryRequest request);

    ContentDTO detail(String id);

    /**
     * 分页查询过滤列表无需字段的内容，以提高速度
     *
     * @param start   页码
     * @param rows    每页行数
     * @param example {@link InfoContentExample} 查询表达式
     */
    List<ContentListItemDTO> queryItemListPage(int start, int rows, InfoContentExample example);

    /**
     * 统计指定类目数据的全部数量
     *
     * @param example {@link InfoContentExample} 查询表达式
     * @return 数量
     */
    Long queryItemListCount(InfoContentExample example);

    /**
     * 通过主键集合查询过滤列表无需字段的内容，以提高速度
     *
     * @param ids 主键集合
     * @return {@link ContentListItemDTO} 列表
     */
    List<ContentListItemDTO> queryItemListByIds(List<String> ids);

    /**
     * 通过主键查询过滤列表无需字段的内容
     *
     * @param id 主键
     * @return {@link ContentListItemDTO}
     */
    ContentListItemDTO queryItemListById(String id);
}